const fs = require('fs');
const path = require('path');

// 这里直接手写吧，不接收参数了
// const reds = [1,5,8,11,18,21]
// const blues = [9,16]
// const reds = [01, 08, 09, 11, 21, 22]
// const reds = [1,2,4,5,6,17,18,26,27,33]
// const reds = [1,3,4,5,7,8,11,21,22,23,27,28,30,31,32]
const reds = [1,14,18,26,31,33]
// const reds = [1,11,15,16,22,31]
// const blues = [10,14,15]
const blues = [10]

// 1,3,4,5,7,8,11,21,22,23,27,28,30,31,32
// 3,7,8,13,15
let num = 0
let tmpResult = []
let result = {}
// reds 中 6*6 组合 求一共有多少中组合，使用程序实现
let redsLen = reds.length
for (let r1 = 0; r1 < redsLen; r1++) {  // 第一个数字
    for (let r2 = 1; r2 < redsLen; r2++) {  // 第二个数字
        for (let r3 = 2; r3 < redsLen; r3++) {  // 第三个数字
            for (let r4 = 3; r4 < redsLen; r4++) {  // 第四个数字
                for (let r5 = 4; r5 < redsLen; r5++) {  // 第五个数字
                    for (let r6 = 5; r6 < redsLen; r6++) {  // 第六个数字
                        if (r1 < r2 && r1 < r3 && r1 < r4 && r1 < r5 && r1 < r6 && r2 < r3 && r2 < r4 && r2 < r5 && r2 < r6 && r3 < r4 && r3 < r5 && r3 < r6 && r4 < r5 && r4 < r6 && r5 < r6 && r1 != r2 && r1 != r3 && r1 != r4 && r1 != r5 && r1 != r6 && r2 != r3 && r2 != r4 && r2 != r5 && r2 != r6 && r3 != r4 && r3 != r5 && r3 != r6 && r4 != r5 && r4 != r6 && r5 != r6) { //判断每个数从左到右,依小到大排列并且每个数不重复
                            let tmpArr = [r1, r2, r3, r4, r5, r6]
                            tmpResult.push(tmpArr)
                            // num++ // 不加蓝球的话，红球 6 6 组合有多少种
                        }
                    }
                }
            }
        }
    }
}

blues.forEach(blue => {
    tmpResult.forEach(res => {
        let tmpReds = res.map(el => {
            return fillZero(reds[el])
        }).sort((a, b) => a - b)
            .join(',')
        num++ // 加上蓝球， 6 6 组合共有多少种
        result[String(num)] = tmpReds + ' - ' + fillZero(blue)
    })
})

function fillZero(num) {
    if (Number(num) < 10) {
        return '0' + Number(num)
    } else {
        return String(num)
    }
}
console.log('一共有：' + num + ' 种结果')

const file = path.join(__dirname, './data.json')
let num_1 = 0
fs.readFile(file, 'utf-8', (err, data) => {
    if (err) {
        console.log('读取失败');
        process.stdout.write(err)
        return
    }
    let jsonRets = JSON.parse(data)
    let keys = Object.keys(jsonRets)
    let vals = Object.values(jsonRets)

    // 对比是否有重复的
    Object.values(result).forEach(ret => {
        let i = vals.indexOf(ret)
        if (i != -1) {
            console.log('完整匹配：之前有记录：\n', '期数：' + keys[i] + '\n', '结果:' + ret + '\n');
        } else {
            // console.log(ret + '无记录');
        }
        
        let r = ret.split(' - ')[0].split(',') // 所有红球结果
        let tmpR = vals.filter((currentValue,index,arr)=>{
            return currentValue.indexOf(r) != -1
        })
        if(tmpR.length > 0){
            console.log('匹配红球，之前有记录：tmpR',tmpR);
        }

        let rRets = []
        let rLen = r.length
        for (let r1 = 0; r1 < rLen; r1++) {  // 第一个数字
            for (let r2 = 1; r2 < rLen; r2++) {  // 第二个数字
                for (let r3 = 2; r3 < rLen; r3++) {  // 第三个数字
                    for (let r4 = 3; r4 < rLen; r4++) {  // 第四个数字
                        // for (let r5 = 4; r5 < rLen; r5++) {  // 第五个数字
                        // if (r1 < r2 && r1 < r3 && r1 < r4 && r1 < r5 && r2 < r3 && r2 < r4 && r2 < r5 && r3 < r4 && r3 < r5 && r4 < r5 && r1 != r2 && r1 != r3 && r1 != r4 && r1 != r5 && r2 != r3 && r2 != r4 && r2 != r5 && r3 != r4 && r3 != r5 && r4 != r5) { //判断每个数从左到右,依小到大排列并且每个数不重复
                        if (r1 < r2 && r1 < r3 && r1 < r4 && r2 < r3 && r2 < r4 && r3 < r4 && r1 != r2 && r1 != r3 && r1 != r4 && r2 != r3 && r2 != r4 && r3 != r4) { //判断每个数从左到右,依小到大排列并且每个数不重复
                            // let tmpArr = [r1, r2, r3, r4, r5]
                            let tmpArr = [r1, r2, r3, r4]
                            rRets.push(tmpArr)
                        }
                        // }
                    }
                }
            }
        }
        let nn = 0
        vals.forEach((item, k) => {
            rRets.forEach(res => {
                let tmprs = res.map(idx => {
                    return fillZero(r[idx])
                }).sort((a, b) => a - b)
                    .join(',')
                let i = item.indexOf(tmprs)
                if (i != -1) {
                    nn += 1
                    // console.log('之前有记录：\n匹配值：' + tmprs + '\n', '期数：' + keys[k] + '\n', '结果:' + item + '\n');
                } else {
                    // console.log(tmprs + '无记录');
                }
            })
        })
        // let nn = 0
        // vals.forEach(item => {
        //     // console.log(item.replace(/(,| - )/g, ' '))
        //     rRets.forEach(res => {
        //         let tmprs = res.map(idx => {
        //             return fillZero(r[idx])
        //         }).sort((a, b) => a - b)
        //             .join(',')
        //         let i = item.indexOf(tmprs)
        //         if(i != -1){
        //             nn += 1
        //             // console.log('之前有记录：\n匹配值：'+tmprs+'\n', '期数：'+keys[i] + '\n', '结果:' + item + '\n');
        //         } else {
        //             // console.log(tmprs + '无记录');
        //         }
        //     })
        // })

        // nn > 0 ? console.log('\n**************************',nn,'**************************\n', tmprsArr) : console.log('无重复值');;
        // if(nn > 3 && nn < 8){
            num_1 += 1
            console.log('\n**************************',nn,'**************************\n', r)
        // }
        // console.log(vals.filter( val => val.indexOf(r) != -1 ))
    })
    // console.log('num_1:',num_1);
})





